<?php
// Абстрактный класс проверки пользователя

abstract class mauth_checkuser
{
	private $cfg;
	private $userid=false;
	function __construct($cfg)
	{
		$this->cfg = $cfg;
	}
	
	/**
	 * Возвращает имя метода
	 *  @return string
	 */
	abstract function method();
	protected function getcfg()
	{
		return $this->cfg;
	}
	/**
	 * Если пользователь найден запоминает данные о нем и возвращет true
	 * если не найден - false
	 * @param $wholelogin
	 * @param $password
	 * @return bool
	 */
	abstract function auth($wholelogin,$password);
	/**
	 * Возвращает id текущего пользователя,
	 * или false
	 */
	function getthisuserid()
	{
		return $this->userid;
	}
	/**
	 * С помощью этой функции необходимо установить id пользователя,
	 * null - если id не предусмотрены,
	 * false - если пользователь не авторизован
	 */
	protected function setthisuserid($userid)
	{
		$this->userid = $userid;
	}

	// *******************************************
	// Функции работы с базой данных пользователей
	/**
	 * Возвращает массив с информацией о пользователе,
	 * $arr['wlogin'] - login
	 * $arr['password'] - пароль (метод может не поддерживать получение паролей)
	 * $arr['id'] - id
	 * или false
	 * @param $wholelogin
	 * @return array
	 */
	function getuserinfo($wholelogin)
	{
		return false;
	}
	/**
	 * Возвращает id произвольного пользователя,
	 * или false
	 */
	function getuserid($wholelogin)
	{
		return false;
	}
	function getuserlogin($id)
	{
		return false;
	}
	/**
	 * Регистрация пользователя
	 * Возвращает id зарегистрированного пользователя
	 * или false
	 * @param $wholelogin
	 * @param $password
	 * @return int
	 */
	function reguser($wholelogin,$password=null)
	{
		return false;
	}
	// *******************************************

	// *************************************************
	// Флаги
	/**
	 * Поддерживает ли данный метод авторизации id
	 */
	function isuserid()
	{
		return false;
	}
	/**
	 * Возможна ли авторизация через этот метод авторизации
	 */
	function isauch()
	{
		return false;
	}
	/**
	 * Возможна ли регистрация через этот метод авторизации
	 */
	function isreg()
	{
		return false;
	}
}

/**
 * Поиск пользователя
 * возвращает массив с ключами
 * pass = true, если пароль верный
 * id - id пользователя в его корневом методе (если поддерживаются)
 * exist = true, если пользователь существует
 * method - метод, в котором найден пользователь
 * @param $wholelogin
 * @param $password
 * @return array
 */
function mauth_searchmethoduser($wholelogin,$password='',$existcheck = false)
{
	$Control = mst_getdatemod('mauth','Control');
	return $Control->searchuser($wholelogin,$password,$existcheck);
	
}

/**
 * Возвращает id пользователя из метода, ответственного за id в настройках
 * @param $wholelogin
 * @return int
 */
function mauth_searchuserid($wholelogin)
{
	$Control = mst_getdatemod('mauth','Control');
	return $Control->searchuserid($wholelogin);
}
?>